#!/bin/bash
# Copyright 2019 The Kubernetes Authors.
# SPDX-License-Identifier: Apache-2.0

# HashiCorp go-getter
#
# Reads a file like this
#
#  apiVersion: someteam.example.com/v1
#  kind: GoGetter
#  metadata:
#    name: example
#  url: github.com/kustless/kustomize-examples.git
#  # subPath: base # (optional) relative path in the package
#  # command: cat *.yaml # (optional) build command, default `kustomize build $subPath`
#
# download kustomize layes and build it to stdout
#
# Example execution:
# ./plugin/someteam.example.com/v1/gogetter/GoGetter configFile.yaml
#
# TODO: cache downloads

set -e

# YAML parsing function borrowed from ChartInflator
function parseYaml {
  local file=$1
  while read -r line
  do
    local k=${line%%:*}
    local v=${line#*:}
    local t=${v#"${v%%[![:space:]]*}"}  # trim leading space

    if [ "$k" == "url" ]; then url=$t
    elif [ "$k" == "subPath" ]; then subPath=$t
    elif [ "$k" == "command" ]; then command=$t
    fi
  done <"$file"
}

TMP_DIR=$(mktemp -d)

parseYaml $1

if [ -z "$command" ]; then
  command="kustomize build"
fi

go-getter $url $TMP_DIR/got 2> /dev/null

(cd $TMP_DIR/got/$subPath; $command)

/bin/rm -rf $TMP_DIR
